home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / Telephone Manager / Stiletto Sources / Sources / DNHandlers.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-07-04  |  17.8 KB  |  433 lines  |  [TEXT/MPS ]

  1. /************************************************************************************************/
  2. /*                                                                                                */
  3. /*    Program Name:    Stiletto                                                                    */
  4. /*                                                                                                */
  5. /*    File Name:        DNHandlers.c                                                                */
  6. /*                                                                                                */
  7. /*    © Apple Computer, Inc. 1991-1995                                                            */
  8. /*    All Rights Reserved                                                                            */
  9. /*                                                                                                */
  10. /*    Revision History:                                                                            */
  11. /*                                                                                                */
  12. /*        Date        Who                    Modification                                            */
  13. /*                                                                                                */
  14. /*        1991-07-03    Chris Halim            Original version                                        */
  15. /*        1995-06-26    Jaakko Railo        Version 2.0                                                */
  16. /*                                                                                                */
  17. /************************************************************************************************/
  18.  
  19. /****************************************** DESCRIPTION ******************************************
  20.  
  21. *************************************************************************************************/
  22.  
  23. /******************************************** HEADERS *******************************************/
  24.  
  25. #include "Telephones.h"
  26.  
  27. #include "Constants.h"
  28. #include "DNHandlers.h"
  29. #include "DNWindow.h"
  30. #include "LogWindow.h"
  31. #include "Utilities.h"
  32.  
  33. /****************************************** DEFINITIONS *****************************************/
  34.  
  35. /****************************************** PROTOTYPES ******************************************/
  36.  
  37. void    HandleDNForwardSetMsg (TELDNHandle dnHand, short mtype, short value, ConstStr255Param rmtDN, ConstStr255Param name, ConstStr255Param subaddr);
  38. void    HandleDNDNDMsg (TELDNHandle dnHand, short mtype, short value, ConstStr255Param rmtDN, ConstStr255Param name, ConstStr255Param subaddr);
  39. void    HandleDNVoiceMsg (TELDNHandle dnHand, short mtype, short value, ConstStr255Param rmtDN, ConstStr255Param name, ConstStr255Param subaddr);
  40. void    HandleDNSelectedMsg (TELDNHandle dnHand, short mtype, short value, ConstStr255Param rmtDN, ConstStr255Param name, ConstStr255Param subaddr);
  41. void    HandleDNOtherMsg (TELDNHandle dnHand, short mtype, short value, ConstStr255Param rmtDN, ConstStr255Param name, ConstStr255Param subaddr);
  42.  
  43. /******************************************** GLOBALS *******************************************/
  44.  
  45. extern    LogWindowPtr        gLogWindow;
  46.  
  47. extern    TelephoneDNMsgUPP    gDNMsgHandlerUPP;
  48.  
  49. /************************************************************************************************/
  50. /************************************************************************************************/
  51.  
  52.  
  53. #pragma segment DNHandlers
  54.  
  55. OSErr    InstallDNHandler (TELDNHandle dnHand)
  56. {
  57.     OSErr    errCode;
  58.     Boolean    allDNs = false;
  59.     
  60.     errCode = TELDNMsgHand (dnHand, allDNs, telDNOtherMsg | telAllDNMsgs, gDNMsgHandlerUPP, SetCurrentA5());
  61.     
  62.     if (errCode != noErr)
  63.         PutCLine (gLogWindow, kErrorColor, "### TELDNMsgHand fails : %d", errCode);
  64.     
  65.     return (errCode);
  66. }
  67.  
  68.  
  69. pascal void    AllDNMsgsHandler (TELDNHandle dnHand, long msg, short mtype, short value, ConstStr255Param rmtDN, ConstStr255Param name, ConstStr255Param subaddr, long ourA5)
  70. {
  71. #pragma unused (mtype, value, rmtDN, name, subaddr)
  72.  
  73.     long    oldA5;
  74.     char     *msgString;
  75.     
  76.     oldA5 = SetA5 (ourA5);
  77.     
  78.     switch (msg) {
  79.         case telDNForwardMsg     : msgString = "telDNForwardMsg"; break;
  80.         case telDNDNDMsg         : msgString = "telDNDNDMsg"; break;
  81.         case telDNVoiceMailMsg     : msgString = "telDNVoiceMailMsg"; break;
  82.         case telDNSelectedMsg    : msgString = "telDNSelectedMsg"; break;
  83.         case telDNOtherMsg         : msgString = "telDNOtherMsg"; break;
  84.         
  85.         default :
  86.             PutCLine (gLogWindow, kErrorColor, "### Unknown dnMsg : %08x", msg);
  87.             msgString = "### Unknown";
  88.     }
  89.     
  90.     PutLine (gLogWindow, ">>> got a DN message (%08x) : %s", dnHand, msgString);
  91.     
  92.     (void) SetA5 (oldA5);
  93. }
  94.  
  95.  
  96. pascal void    DNMsgHandler (TELDNHandle dnHand, long msg, short mtype, short value, ConstStr255Param rmtDN, ConstStr255Param name, ConstStr255Param subaddr, long ourA5)
  97. {
  98. #pragma unused (dnHand)
  99.  
  100.     long    oldA5;
  101.     
  102.     oldA5 = SetA5 (ourA5);
  103.     
  104.     switch (msg) {
  105.         case telDNForwardMsg :
  106.             HandleDNForwardSetMsg (dnHand, mtype, value, rmtDN, name, subaddr);
  107.             break;
  108.             
  109.         case telDNDNDMsg :
  110.             HandleDNDNDMsg (dnHand, mtype, value, rmtDN, name, subaddr);
  111.             break;
  112.             
  113.         case telDNVoiceMailMsg :
  114.             HandleDNVoiceMsg (dnHand, mtype, value, rmtDN, name, subaddr);
  115.             break;
  116.             
  117.         case telDNSelectedMsg :
  118.             HandleDNSelectedMsg (dnHand, mtype, value, rmtDN, name, subaddr);
  119.             break;
  120.             
  121.         case telDNOtherMsg :
  122.             HandleDNOtherMsg (dnHand, mtype, value, rmtDN, name, subaddr);
  123.             break;
  124.             
  125.         default :
  126.             PutCLine (gLogWindow, kErrorColor, "### Unknown dnMsg : %08x", msg);
  127.     }
  128.     
  129.     (void) SetA5 (oldA5);
  130. }
  131.  
  132.  
  133. void    HandleDNForwardSetMsg (TELDNHandle dnHand, short mtype, short value, ConstStr255Param rmtDN, ConstStr255Param name, ConstStr255Param subaddr)
  134. {
  135.     char         *typeStr, *valueStr;
  136.     DNWindowPtr    dnWindow;
  137.     Str255        tString1, tString2, tString3;
  138.  
  139.     switch (mtype) {
  140.         case telForwardImmediate :
  141.             typeStr = "telForwardImmediate";
  142.             break;
  143.         case telForwardBusy :
  144.             typeStr = "telForwardBusy";
  145.             break;
  146.         case telForwardNoAnswer :
  147.             typeStr = "telForwardNoAnswer";
  148.             break;
  149.         case telForwardBusyNA :
  150.             typeStr = "telForwardBusyNA";
  151.             break;
  152.         case telForwardTypeUnknown :
  153.             typeStr = "telForwardTypeUnknown";
  154.             break;
  155.         default :
  156.             typeStr = "### Unknown fwdType";
  157.     }
  158.     
  159.     switch (value) {
  160.         case telForwardCleared :
  161.             valueStr = "FowardClr";
  162.             break;
  163.         case telForwardEst :
  164.             valueStr = "telForwardEst";
  165.             break;
  166.         case telForwardFailed :
  167.             valueStr = "telForwardFailed";
  168.             break;
  169.         default :
  170.             valueStr = "### Unknown fwdValue";
  171.     }
  172.     
  173.     PutCLine (gLogWindow, kDNMsgColor, "::: telDNForwardMsg (%08x) --> %s, %s", dnHand, valueStr, typeStr);
  174.     PutLine (gLogWindow, "       dest = %s, name = %s, subaddr = %s", 
  175.                         ConvertToCString ((char *) tString1, (char *) rmtDN), 
  176.                         ConvertToCString ((char *) tString2, (char *) name), 
  177.                         ConvertToCString ((char *) tString3, (char *) subaddr));
  178.     
  179.     if ((dnHand != nil) && ((value == telForwardCleared) || (value == telForwardEst))) {
  180.         dnWindow = (DNWindowPtr) (*dnHand)->userData;
  181.         SetCtlValue (dnWindow->fForward, (value == telForwardEst));
  182.     }
  183. }
  184.  
  185.  
  186. void    HandleDNDNDMsg (TELDNHandle dnHand, short mtype, short value, ConstStr255Param rmtDN, ConstStr255Param name, ConstStr255Param subaddr)
  187. {
  188. #pragma unused (rmtDN, name, subaddr)
  189.  
  190.     char         *typeStr, *valueStr;
  191.     DNWindowPtr    dnWindow;
  192.     
  193.     switch (mtype) {
  194.         case telDNDIntExt :
  195.             typeStr = "telDNDIntExt";
  196.             break;
  197.         case telDNDExternal :
  198.             typeStr = "telDNDExternal";
  199.             break;
  200.         case telDNDInternal :
  201.             typeStr = "telDNDInternal";
  202.             break;
  203.         case telDNDNonIntercom :
  204.             typeStr = "telDNDNonIntercom";
  205.             break;
  206.         default :
  207.             typeStr = "### Unknown dndType";
  208.     }
  209.     
  210.     switch (value) {
  211.         case telDNDCleared :
  212.             valueStr = "telDNDCleared";
  213.             break;
  214.         case telDNDEst :
  215.             valueStr = "telDNDEst";
  216.             break;
  217.         case telDNDFailed :
  218.             valueStr = "telDNDFailed";
  219.             break;
  220.         default :
  221.             valueStr = "### Unknown dndValue";
  222.     }
  223.     
  224.     PutCLine (gLogWindow, kDNMsgColor, "::: telDNDNDMsg (%08x) --> %s, %s", dnHand, valueStr, typeStr);
  225.     
  226.     if ((dnHand != nil) && ((value == telDNDCleared) || (value == telDNDEst))) {
  227.         dnWindow = (DNWindowPtr) (*dnHand)->userData;
  228.         SetCtlValue (dnWindow->fDND, (value == telDNDEst));
  229.     }
  230. }
  231.  
  232.  
  233. void    HandleDNVoiceMsg (TELDNHandle dnHand, short mtype, short value, ConstStr255Param rmtDN, ConstStr255Param name, ConstStr255Param subaddr)
  234. {
  235. #pragma unused (mtype)
  236.  
  237.     char     *valueStr;
  238.     Str255    tString1, tString2, tString3;
  239.     
  240.     switch (value) {
  241.         case telAllVoiceMessagesRead :
  242.             valueStr = "telAllVoiceMessagesRead";
  243.             break;
  244.         case telNewVoiceMessage :
  245.             valueStr = "telNewVoiceMessage";
  246.             break;
  247.         default :
  248.             valueStr = "### Unknown dndValue";
  249.     }
  250.     
  251.     PutCLine (gLogWindow, kDNMsgColor, "::: telDNVoiceMailMsg (%08x) --> %s", dnHand, valueStr);
  252.     PutLine (gLogWindow, "       from = %s, name = %s, subaddr = %s", 
  253.                             ConvertToCString ((char *) tString1, (char *) rmtDN),
  254.                             ConvertToCString ((char *) tString2, (char *) name),
  255.                             ConvertToCString ((char *) tString3, (char *) subaddr));
  256. }
  257.  
  258.  
  259. void    HandleDNSelectedMsg (TELDNHandle dnHand, short mtype, short value, ConstStr255Param rmtDN, ConstStr255Param name, ConstStr255Param subaddr)
  260. {
  261. #pragma unused (mtype, rmtDN, name, subaddr)
  262.  
  263.     char     *valueStr;
  264.     
  265.     switch (value) {
  266.         case telDNDeselected :
  267.             valueStr = "telDNDeselected";
  268.             break;
  269.         case telDNSelected :
  270.             valueStr = "telDNSelected";
  271.             break;
  272.         default :
  273.             valueStr = "### Unknown dndValue";
  274.     }
  275.     
  276.     PutCLine (gLogWindow, kDNMsgColor, "::: telDNSelectedMsg (%08x) --> %s", dnHand, valueStr);
  277. }
  278.  
  279.  
  280.  
  281. void    HandleDNOtherMsg (TELDNHandle dnHand, short mtype, short value, ConstStr255Param rmtDN, ConstStr255Param name, ConstStr255Param subaddr)
  282. {
  283.     Str255    tString1, tString2, tString3;
  284.  
  285.     PutCLine (gLogWindow, kDNMsgColor, "::: telDNOtherMsg (%08x) --> (vendor defined) type = %d, value = %d", dnHand, mtype, value);
  286.     PutLine (gLogWindow, "       rmtDN = %s, name = %s, subaddr = %s", 
  287.                             ConvertToCString ((char *) tString1, (char *) rmtDN), 
  288.                             ConvertToCString ((char *) tString2, (char *) name),
  289.                             ConvertToCString ((char *) tString3, (char *) subaddr));
  290. }
  291.  
  292.  
  293. #pragma segment Dump
  294. void    DumpDNInfo (TELDNHandle dnHand)
  295. {
  296.     OSErr                errCode;
  297.     long                flags;
  298.     Str255                tString;
  299.     
  300.     if (dnHand != nil) {
  301.         if ((errCode = TELGetDNInfo (dnHand)) == noErr) {
  302.             PutLine (gLogWindow, "=============== TELDNRecord ===============");
  303.             PutLine (gLogWindow, " dnRef               : %04x", (**dnHand).dnRef);
  304.             PutLine (gLogWindow, " dn                  : %s", ConvertToCString ((char *) tString, (char *) (**dnHand).dn));
  305.             PutLine (gLogWindow, " dnPartyName         : %s", ConvertToCString ((char *) tString, (char *) (**dnHand).dnPartyName));
  306.             PutLine (gLogWindow, " dnSubaddress        : %s", ConvertToCString ((char *) tString, (char *) (**dnHand).dnSubaddress));
  307.             PutLine (gLogWindow, " hTEL                : %08x", (**dnHand).hTEL);
  308.             PutLine (gLogWindow, " maxAllocCA          : %d", (**dnHand).maxAllocCA);
  309.             PutLine (gLogWindow, " curAllocCA          : %d", (**dnHand).curAllocCA);
  310.             PutLine (gLogWindow, " dnType              : %d", (**dnHand).dnType);
  311.  
  312.             flags = (**dnHand).featureFlags;
  313.             PutLine (gLogWindow, " featureFlags        : %08x", flags);
  314.             
  315.             PutLine (gLogWindow, " numPageIDs          : %d", (**dnHand).numPageIDs);
  316.             PutLine (gLogWindow, " numIntercomIDs      : %d", (**dnHand).numIntercomIDs);
  317.             PutLine (gLogWindow, " numPickupIDs        : %d", (**dnHand).numPickupIDs);
  318.  
  319.             flags = (**dnHand).forwardFlags;
  320.             PutLine (gLogWindow, " forwardFlags        : %08x", flags);
  321.  
  322.             PutLine (gLogWindow, " iForwardDN          : %s", ConvertToCString ((char *) tString, (char *) (**dnHand).iForwardDN));
  323.             PutLine (gLogWindow, " iForwardSubaddress  : %s", ConvertToCString ((char *) tString, (char *) (**dnHand).iForwardSubaddress));
  324.             PutLine (gLogWindow, " iForwardPartyName   : %s", ConvertToCString ((char *) tString, (char *) (**dnHand).iForwardPartyName));
  325.             PutLine (gLogWindow, " bForwardDN          : %s", ConvertToCString ((char *) tString, (char *) (**dnHand).bForwardDN));
  326.             PutLine (gLogWindow, " bForwardSubaddress  : %s", ConvertToCString ((char *) tString, (char *) (**dnHand).bForwardSubaddress));
  327.             PutLine (gLogWindow, " bForwardPartyName   : %s", ConvertToCString ((char *) tString, (char *) (**dnHand).bForwardPartyName));
  328.             PutLine (gLogWindow, " naForwardDN         : %s", ConvertToCString ((char *) tString, (char *) (**dnHand).naForwardDN));
  329.             PutLine (gLogWindow, " naForwardSubaddress : %s", ConvertToCString ((char *) tString, (char *) (**dnHand).naForwardSubaddress));
  330.             PutLine (gLogWindow, " naForwardPartyName  : %s", ConvertToCString ((char *) tString, (char *) (**dnHand).naForwardPartyName));
  331.             PutLine (gLogWindow, " naForwardRings      : %d", (**dnHand).naForwardRings);
  332.  
  333.             PutLine (gLogWindow, " telDNPrivate        : %08x", (**dnHand).telDNPrivate);
  334.             PutLine (gLogWindow, " refCon              : %08x", (**dnHand).refCon);
  335.             PutLine (gLogWindow, " userData            : %08x", (**dnHand).userData);
  336.  
  337.             PutLine (gLogWindow, " reserved            : %08x", (**dnHand).reserved);
  338.         } else
  339.             PutCLine (gLogWindow, kErrorColor, "### TELDNGetInfo fails : %d", errCode);
  340.     }
  341.     else
  342.         PutCLine (gLogWindow, kErrorColor, "### Invalid dnHand");
  343. }
  344.  
  345.  
  346. #pragma segment Dump
  347. void    DumpDNFlags (TELDNHandle dnHand)
  348. {
  349.     OSErr    errCode;
  350.     long    dnFeatureFlags, dnFwdFlags;
  351.     
  352.     if (dnHand != nil) {
  353.         if ((errCode = TELGetDNFlags (dnHand, &dnFeatureFlags, &dnFwdFlags)) == noErr) {
  354.             PutLine (gLogWindow, "=============== dnFeatureFlags ===============");
  355.             PutLine (gLogWindow, " featureFlags : %08x", dnFeatureFlags);
  356.             PutLine (gLogWindow, " %c dndSub", (dnFeatureFlags & dndSub)?checkChar:spaceChar);
  357.             PutLine (gLogWindow, " %c dndAvail", (dnFeatureFlags & dndAvail)?checkChar:spaceChar);
  358.             PutLine (gLogWindow, " %c dndActive", (dnFeatureFlags & dndActive)?checkChar:spaceChar);
  359.             PutLine (gLogWindow, " %c voiceMailAccessSub", (dnFeatureFlags & voiceMailAccessSub)?checkChar:spaceChar);
  360.             PutLine (gLogWindow, " %c voiceMailAccessAvail", (dnFeatureFlags & voiceMailAccessAvail)?checkChar:spaceChar);
  361.             PutLine (gLogWindow, " %c voiceMailAccessActive", (dnFeatureFlags & voiceMailAccessActive)?checkChar:spaceChar);
  362.             PutLine (gLogWindow, " %c pagingSub", (dnFeatureFlags & pagingSub)?checkChar:spaceChar);
  363.             PutLine (gLogWindow, " %c pagingAvail", (dnFeatureFlags & pagingAvail)?checkChar:spaceChar);
  364.             PutLine (gLogWindow, " %c pagingActive", (dnFeatureFlags & pagingActive)?checkChar:spaceChar);
  365.             PutLine (gLogWindow, " %c intercomSub", (dnFeatureFlags & intercomSub)?checkChar:spaceChar);
  366.             PutLine (gLogWindow, " %c intercomAvail", (dnFeatureFlags & intercomAvail)?checkChar:spaceChar);
  367.             PutLine (gLogWindow, " %c intercomActive", (dnFeatureFlags & intercomActive)?checkChar:spaceChar);
  368.             PutLine (gLogWindow, " %c dnSelectSub", (dnFeatureFlags & dnSelectSub)?checkChar:spaceChar);
  369.             PutLine (gLogWindow, " %c dnSelectAvail", (dnFeatureFlags & dnSelectAvail)?checkChar:spaceChar);
  370.             PutLine (gLogWindow, " %c dnSelectActive", (dnFeatureFlags & dnSelectActive)?checkChar:spaceChar);
  371.             PutLine (gLogWindow, " %c callPickupSub", (dnFeatureFlags & callPickupSub)?checkChar:spaceChar);
  372.             PutLine (gLogWindow, " %c callPickupAvail", (dnFeatureFlags & callPickupAvail)?checkChar:spaceChar);
  373.             PutLine (gLogWindow, " %c dnInUse", (dnFeatureFlags & dnInUse)?checkChar:spaceChar);
  374.             PutLine (gLogWindow, " %c logicalDN", (dnFeatureFlags & logicalDN)?checkChar:spaceChar);
  375.             PutLine (gLogWindow, " %c dnAccessible", (dnFeatureFlags & dnAccessible)?checkChar:spaceChar);
  376.             PutLine (gLogWindow, " %c canInitiate", (dnFeatureFlags & canInitiate)?checkChar:spaceChar);
  377.             PutLine (gLogWindow, " %c voiceMessageWaiting", (dnFeatureFlags & voiceMessageWaiting)?checkChar:spaceChar);
  378.             PutLine (gLogWindow, " %c hasDNSoundStreams", (dnFeatureFlags & hasDNSoundStreams)?checkChar:spaceChar);
  379.             PutLine (gLogWindow, " %c autoAnswerAvail", (dnFeatureFlags & autoAnswerAvail)?checkChar:spaceChar);
  380.             PutLine (gLogWindow, " %c autoAnswerActive", (dnFeatureFlags & autoAnswerActive)?checkChar:spaceChar);
  381.             PutLine (gLogWindow, " %c tollSaverAvail", (dnFeatureFlags & tollSaverAvail)?checkChar:spaceChar);
  382.             PutLine (gLogWindow, " %c tollSaverActive", (dnFeatureFlags & tollSaverActive)?checkChar:spaceChar);
  383.             PutLine (gLogWindow, "  remainder     : %08x", (dnFeatureFlags & (0xFFFFFFFF << 27)));
  384.             
  385.             PutLine (gLogWindow, "=============== dnForwardFlags ===============");
  386.             PutLine (gLogWindow, " ForwardFlags : %08x", dnFwdFlags);
  387.             PutLine (gLogWindow, " %c immediateForwardSub", (dnFwdFlags & immediateForwardSub)?checkChar:spaceChar);
  388.             PutLine (gLogWindow, " %c immediateForwardAvail", (dnFwdFlags & immediateForwardAvail)?checkChar:spaceChar);
  389.             PutLine (gLogWindow, " %c immediateForwardActive", (dnFwdFlags & immediateForwardActive)?checkChar:spaceChar);
  390.             PutLine (gLogWindow, " %c busyForwardSub", (dnFwdFlags & busyForwardSub)?checkChar:spaceChar);
  391.             PutLine (gLogWindow, " %c busyForwardAvail", (dnFwdFlags & busyForwardAvail)?checkChar:spaceChar);
  392.             PutLine (gLogWindow, " %c busyForwardActive", (dnFwdFlags & busyForwardActive)?checkChar:spaceChar);
  393.             PutLine (gLogWindow, " %c noAnswerForwardSub", (dnFwdFlags & noAnswerForwardSub)?checkChar:spaceChar);
  394.             PutLine (gLogWindow, " %c noAnswerForwardAvail", (dnFwdFlags & noAnswerForwardAvail)?checkChar:spaceChar);
  395.             PutLine (gLogWindow, " %c noAnswerForwardActive", (dnFwdFlags & noAnswerForwardActive)?checkChar:spaceChar);
  396.             PutLine (gLogWindow, " %c busyNAForwardSub", (dnFwdFlags & busyNAForwardSub)?checkChar:spaceChar);
  397.             PutLine (gLogWindow, " %c busyNAForwardAvail", (dnFwdFlags & busyNAForwardAvail)?checkChar:spaceChar);
  398.             PutLine (gLogWindow, " %c busyNAForwardActive", (dnFwdFlags & busyNAForwardActive)?checkChar:spaceChar);
  399.             PutLine (gLogWindow, "  remainder     : %08x", (dnFwdFlags & (0xFFFFFFFF << 12)));
  400.  
  401.         } else
  402.             PutCLine (gLogWindow, kErrorColor, "### TELGetDNFlags fails : %d", errCode);
  403.     }
  404.     else
  405.         PutCLine (gLogWindow, kErrorColor, "### Invalid dnHand");
  406. }
  407.  
  408.  
  409. #pragma segment Dump
  410. void    DumpDNEvents (TELDNHandle dnHand)
  411. {
  412.     OSErr            errCode;
  413.     long            eventMask;
  414.     
  415.     if (dnHand != nil) {
  416.         if ((errCode = TELDNEventsSupp (dnHand, &eventMask)) == noErr) {
  417.             PutLine (gLogWindow, "=============== DNEvents ===============");
  418.             PutLine (gLogWindow, " mask         : %08x", eventMask);
  419.             PutLine (gLogWindow, " %c telDNForwardMsg", (eventMask & telDNForwardMsg)?checkChar:spaceChar);
  420.             PutLine (gLogWindow, " %c telDNDNDMsg", (eventMask & telDNDNDMsg)?checkChar:spaceChar);
  421.             PutLine (gLogWindow, " %c telDNVoiceMailMsg", (eventMask & telDNVoiceMailMsg)?checkChar:spaceChar);
  422.             PutLine (gLogWindow, " %c telDNSelectedMsg", (eventMask & telDNSelectedMsg)?checkChar:spaceChar);
  423.             PutLine (gLogWindow, " %c telDNOtherMsg", (eventMask & telDNOtherMsg)?checkChar:spaceChar);
  424.             PutLine (gLogWindow, " remainder     : %08x", (eventMask & ~(telAllDNMsgs | telDNOtherMsg)));
  425.         } else
  426.             PutCLine (gLogWindow, kErrorColor, "### TELDNEventsSupp fails : %d", errCode);
  427.     }
  428.     else
  429.         PutCLine (gLogWindow, kErrorColor, "### Invalid dnHand");
  430. }
  431.  
  432.  
  433.